/* eslint-disable indent */

module.exports = {
  // publicPath默认下是/,如果生产环境要配置网站子域名,可以设置/children
  publicPath: '',
  runtimeCompiler: false, // 是否使用包含运行时编译器的Vue核心的构建
  outputDir: 'dist', // 打包的目录
  assetsDir: 'static', // assetsDir是相对于 outputDir目录
  lintOnSave: true, // 在保存时校验格式
  productionSourceMap: false, // 生产环境是否生成 SourceMap
  // 构建时开启多进程处理 babel 编译
  parallel: require('os').cpus().length > 1,
  pages: {
    index: {
      // page 的入口
      entry: 'src/main.ts',
      // 模板来源
      template: 'public/index.html',
      // 在 dist/index.html 的输出
      filename: 'index.html',
      // 当使用 title 选项时，
      // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
      title: '在线双人象棋对战',
      // 在这个页面中包含的块，默认情况下会包含
      // 提取出来的通用 chunk 和 vendor chunk。
      chunks: ['chunk-vendors', 'chunk-common', 'index']
    }
    // 当使用只有入口的字符串格式时，
    // 模板会被推导为 `public/subpage.html`
    // 并且如果找不到的话，就回退到 `public/index.html`。
    // 输出文件名会被推导为 `subpage.html`。
    // subpage: 'src/subpage/main.js'
  },
  // 传递第三方插件选项
  pluginOptions: {

  },
  chainWebpack: config => {
    // 解决控制台会报错，“window is undefined”
    config.output.globalObject('this')
    // 配置别名
    config.extensions = ['.js', '.ts', '.vue', '.html']
    config.resolve.alias
      .set('vue$', 'vue/dist/vue.esm.js')
    config.module
      .rule('html')
        .test(/(?<!index)\.html$/)// 为了防止html-loader将index.html解析成字符串，进而无法解析jsp模板语法
        .use('html-loader')
          .loader('html-loader')// 预读，识别html文件
          .end()
        .end()
      // .rule('scss')
      // .test(/\.scss$/)
      // .oneOf('vue')
      //   .resourceQuery(/\?vue/)
      //   .use('vue-style')
      //     .loader('vue-style-loader')
      //     .end()
      //   .end()
      // .oneOf('normal')
      //   .use('sass')
      //     .loader('sass-loader')
      //     .end()
      //   .end()
      // .oneOf('sass-vars')
      //   .after('vue')
      //   .resourceQuery(/\?sassvars/)
      //   .use('sass-vars')
      //     .loader('sass-vars-to-js-loader')
  },

  // 以下是设置web worker
  configureWebpack: config => {
    config.module.rules.push({
      test: /\.worker.[tj]s$/,
      use: {
        loader: 'worker-loader',
        options: { inline: true, name: 'workerName.[hash].js' }
      }
    })
  }
}
